package com.wang.vo;


import com.fasterxml.jackson.annotation.JsonProperty;

import java.math.BigDecimal;
import java.util.List;

public class CartVO {

    /**
     * 购物车商品列表
     */
    @JsonProperty("cart_item_list")
    private List<CartItemVO> cartItemList;

    /**
     * 购物车总价
     */
    @JsonProperty("total_price")
    private BigDecimal totalPrice;

    /**
     * 购物车商品数量
     */
    @JsonProperty("cart_item_sum")
    private Integer cartItemSum;

    /**
     * 实际支付价格
     */
    @JsonProperty("real_pay_price")
    private BigDecimal realPayPrice;

    public List<CartItemVO> getCartItemVOList() {
        return cartItemList;
    }

    public void setCartItemVOList(List<CartItemVO> cartItemVOList) {
        this.cartItemList = cartItemVOList;
    }

    /**
     * 总价格
     * @return
     */
    public BigDecimal getTotalPrice() {
        BigDecimal amount = new BigDecimal(0);
        if(cartItemList != null){
            for(CartItemVO cartItemVO : cartItemList){
                amount = amount.add(cartItemVO.getTotalPrice());
            }
        }
        totalPrice = amount;
        return totalPrice;
    }

    /**
     * 商品数量
     * @return
     */
    public Integer getCartItemSum() {
        if(cartItemList != null){
            cartItemSum = cartItemList.stream().map(CartItemVO::getNum).reduce(0, Integer::sum);
            return cartItemSum;
        }
        return 0;
    }

    /**
     * 实际支付价格
     * @return
     */
    public BigDecimal getRealPayPrice() {
        BigDecimal amount = new BigDecimal(0);
        if(cartItemList != null){
            for(CartItemVO cartItemVO : cartItemList){
                amount = amount.add(cartItemVO.getTotalPrice());
            }
        }
        realPayPrice = amount;
        return realPayPrice;
    }
}
